查看原文
其他

干货|如何处理不均衡数据?

2017-06-04 洪进&云时之间 机器学习算法与自然语言处理

如何处理不均衡数据?

今天让我们聊聊在机器学习中遇到了一些不均衡数据的时候,我们应该怎么做.

不均衡的数据通常来说形式都比较固定,并且也比较好区分.比如说你手头上现在有苹果和梨,在这个时候你手中的数据都跟你说,全世界的人都吃梨哦,这个时候你去找一个路人甲,问问他你是不是喜欢吃梨啊,这个时候我们大多数人都会猜测,这个人会吃梨,这个时候梨就可以作为优势数据变得很骄傲了.

这个时候,让我们来引入今天的问题,如何处理不均衡数据.

其实不均衡的数据理解预测起来很简单,永远都是预测多的数据的那一方,这样准没错,特别是数据多很多的情况的那一方,比如多的占了90%,少的占10%.只要每一次都预测多的那一批数据,预测的准确性就可以达到90%了。

没错,这样听起来是不是有点偷懒的感觉呢?其实机器也懂得这些小伎俩,所以经过训练以后,机器也变得精明了,每一次都预测多的那部分数据,但是这样是不可以的!接下来我们来谈谈解决这个问题的几种方法

1  方法1:想办法获取更多的数据

首先我们要想一想我们是否可以获取更多的数据,有的时候我们在获取数据的前期,通常数据会呈现一个变化的趋势,这时候表现为某一种数据量偏多,等到数据的后半段的时期,数据的变化的趋势可能就会不一样了。

如果没有获取后半期的数据,从整体来看,预测就可能不会那么的精准.所以想办法获得更多的数据有可能会改善这个情况~

2  方法2:换一种评判方式

通常情况下,我们会使用准确率(Accuracy)和误差(Cost)两种方式来判断机器学习的成果.但是在不均衡的数据面前,高的准确率和低的误差就显得没有那么有用和重要了.

所以我们就可以换个方式去计算,很多时候我们会使用Confusion Matrix去计算Precision&Recall,然后在通过Precision&Recall去计算F1 Score(or F-score).通过这样的数据,我们可以很大程度上去区分不均衡数据,并且可以给出更好的分数.因为我水平的问题,具体的计算推理过程等我日后会进行推导!(立flag)

3  方法3:重组数据

第三种方法相对来说最为简单粗暴,对不均衡的数据进行重新组合,使之均衡。


第一种方式是复制少数数据里的样本,使其可以达到和多数数据样本差不多的数量。


第二种方式就是对多数样本的数据进行开刀,砍掉一些多数样本的数据,还是使两者的数量差不多


4 方法4:使用其他的机器学习方法


在使用一些机器学习的方法中,比如神经网络,在面对不均衡数据的时候都是束手无策的,但是像决策树这样的方法就不会受到不均衡数据的影响


5  方法5:修改算法

在所有方法中,最具有创造力的方法莫过于这个修改算法了,如果你使用的是Sigmoid函数,他会有一个预测的门槛,如果低于门槛,预测的结果为梨,如果超过了门槛,预测的结果为苹果。


不过因为现在梨的数量过多,这个时候我们就需要调解下门槛的位置,使得门槛更加的偏向于苹果这一边,只有数据非常准确的情况下,模型才会预测为苹果,从而使机器学习学习到更好的效果.

好了,这就是这一篇文章的一些简单概括,如果大家想要学习更多的机器学习的知识,欢迎关注学妹的简书频道~见原文链接~


投稿请联系m15840540712@163.com

近期文章预告!

《通俗讲解为什么神经网络参数初始化不能全0的原因》

《通俗讲解隐马尔科夫模型(HMM)-后向算法》

《通俗讲解隐马尔科夫模型(HMM)-维特比算法》

近期毕业比较忙~推送可能较晚,但是只要推送的都是干货额~


推荐阅读文章!

隐马尔科夫模型-基本模型与三个基本问题

深入浅出理解决策树算法(一)-核心思想

朴素贝叶斯分类实例-单词纠正问题


全是通俗易懂的硬货!只需置顶~欢迎关注交流~



您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存